//条件类型是在初始状态下并不直接确定具体类型，而是通过一定的类型运算得到的最终变量类型

type A = string
type B = number

//返回[]
type C = A extends B ? {} : []

//排除string
type D = Exclude<string|number|boolean, string>

//只留string
type E = Extract<string|number|boolean, string>

//剩string
type F = NonNullable<string|null|undefined>

type G = (n:number , m:string) => string

//函数参数转换成一个元组类型
type H = Parameters<G>

let a:H = [1,'123']

//G类型的返回值
type I = ReturnType<G>

